package pl.gwt.client.gui;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ImageBundle;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class TopPanel extends Composite implements ClickListener {

	public interface Images extends ImageBundle {
		AbstractImagePrototype logo();
	}
	
	private HTML signOutLink = new HTML("<a href='javascript:;'>Sign Out</a>");
	private HTML aboutLink = new HTML("<a href='javascript:;'>About</a>"); 
	
	public TopPanel(Images images){
	    HorizontalPanel outer = new HorizontalPanel();
	    VerticalPanel inner = new VerticalPanel();

	    outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
	    inner.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
	    
	    HorizontalPanel links = new HorizontalPanel();
	    links.setSpacing(4);
	    links.add(signOutLink);
	    links.add(aboutLink);

	    final Image logo = images.logo().createImage();
	    outer.add(logo);
	    outer.setCellHorizontalAlignment(logo, HorizontalPanel.ALIGN_LEFT);

	    outer.add(inner);
	    inner.add(new HTML("<b>Logged as kfiatek@gmail.com</b>"));
	    inner.add(links);

	    signOutLink.addClickListener(this);
	    aboutLink.addClickListener(this);

	    initWidget(outer);
	    setStyleName("mail-TopPanel");
	    links.setStyleName("mail-TopPanelLinks");
	}
	
	public void onClick(Widget sender) {
	    if (sender == signOutLink) {
	        Window.alert("If this were implemented, you would be signed out now.");
	    } else if (sender == aboutLink) {
	        // When the 'About' item is selected, show the AboutDialog.
	        // Note that showing a dialog box does not block -- execution continues
	        // normally, and the dialog fires an event when it is closed.
	        AboutDialog dlg = new AboutDialog();
	        dlg.show();
	        dlg.center();
	    }
	}

}
